/**   
 * @Title: ApplicationConfig.java 
 * @Package org.playgod1984.du.base 
 * @Description: TODO(用一句话描述该文件做什么) 
 * @author playgod playgod1984@163.com  
 * @date 2014年10月15日 上午11:15:23 
 * @version V1.0   
 */
package org.playgod1984.du.base;


import org.playgod1984.du.auth.model.User;
import org.playgod1984.du.base.routes.AuthRoutes;
import org.playgod1984.du.base.routes.DDesignRoutes;
import org.playgod1984.du.ddesign.model.Diagram;
import org.playgod1984.du.ddesign.model.Field;
import org.playgod1984.du.ddesign.model.Project;
import org.playgod1984.du.ddesign.model.Table;
import org.playgod1984.du.index.IndexContorller;

import com.jfinal.config.Constants;
import com.jfinal.config.Handlers;
import com.jfinal.config.Interceptors;
import com.jfinal.config.JFinalConfig;
import com.jfinal.config.Plugins;
import com.jfinal.config.Routes;
import com.jfinal.core.JFinal;
import com.jfinal.ext.handler.ContextPathHandler;
import com.jfinal.plugin.activerecord.ActiveRecordPlugin;
import com.jfinal.plugin.activerecord.dialect.MysqlDialect;
import com.jfinal.plugin.druid.DruidPlugin;
import com.jfinal.render.ViewType;

/** 
 * @ClassName: ApplicationConfig 
 * @Description: 全局配置 
 * @author playgod playgod1984@163.com 
 * @date 2014年10月15日 上午11:15:23 
 *  
 */
@SuppressWarnings("all")
public class ApplicationConfig extends JFinalConfig {

	/* (非 Javadoc) 
	 * <p>Title: configConstant</p> 
	 * <p>Description: </p> 
	 * @param me 
	 * @see com.jfinal.config.JFinalConfig#configConstant(com.jfinal.config.Constants) 
	 */
	@Override
	public void configConstant(Constants me) {
		loadPropertyFile("jdbc.properties"); // 数据库信息
		me.setDevMode(true);// Debug模式
		me.setViewType(ViewType.FREE_MARKER);//
	}

	/* (非 Javadoc) 
	 * <p>Title: configRoute</p> 
	 * <p>Description: </p> 
	 * @param me 
	 * @see com.jfinal.config.JFinalConfig#configRoute(com.jfinal.config.Routes) 
	 */
	@Override
	public void configRoute(Routes me) {
		me.add("/",IndexContorller.class);
		me.add(new AuthRoutes());// 权限管理路由
		//===========主业务路径开始======================
		me.add(new DDesignRoutes());// 业务功能路由
	}

	/* (非 Javadoc) 
	 * <p>Title: configPlugin</p> 
	 * <p>Description: </p> 
	 * @param me 
	 * @see com.jfinal.config.JFinalConfig#configPlugin(com.jfinal.config.Plugins) 
	 */
	@Override
	public void configPlugin(Plugins me) {
		// Druid
		DruidPlugin druidPlugin = new DruidPlugin(getProperty("jdbcUrl"),
				getProperty("user"), getProperty("password").trim());
		me.add(druidPlugin);
		// 结果集
		ActiveRecordPlugin arp = new ActiveRecordPlugin(druidPlugin);
		arp.setDialect(new MysqlDialect());// 设置Mysql方言
		//****************************************表注册开始*************************************
		//=====权限功能表开始=====================================================================
		arp.addMapping("dud_auth_user", "loginaccount", User.class);
		//=====权限功能表结束=========================================================================
		//=====业务功能表开始=====================================================================
		arp.addMapping("dud_ddesign_pro", "projectcode", Project.class);
		arp.addMapping("dud_design_diagram","diagramid",Diagram.class);
		arp.addMapping("dud_design_table","tableid",Table.class);
		arp.addMapping("dud_design_field","fieldid", Field.class);
		//=====业务功能表结束=========================================================================
		
		//****************************************表注册结束*************************************
		arp.setShowSql(true);// 输出SQL语句
		me.add(arp);
	}

	/* (非 Javadoc) 
	 * <p>Title: configInterceptor</p> 
	 * <p>Description: </p> 
	 * @param me 
	 * @see com.jfinal.config.JFinalConfig#configInterceptor(com.jfinal.config.Interceptors) 
	 */
	@Override
	public void configInterceptor(Interceptors me) {
		// TODO Auto-generated method stub

	}

	/* (非 Javadoc) 
	 * <p>Title: configHandler</p> 
	 * <p>Description: </p> 
	 * @param me 
	 * @see com.jfinal.config.JFinalConfig#configHandler(com.jfinal.config.Handlers) 
	 */
	@Override
	public void configHandler(Handlers me) {
		me.add(new ContextPathHandler());
	}

	// 程序入口
	public static void main(String[] args) {
		// maven项目，其中第一个参数即根目录
		//JFinal.start("src/main/webapp", 80, "/", 5);
		// 普通Eclipse WEB项目，其中第一个参数即根目录
		JFinal.start("WebContent", 80, "/", 5);
		// 普通MyEclipse WEB项目，其中第一个参数即根目录，JFinal自带的也是这种启动方式
		// JFinal.start("WebRoot", 80, "/", 5);
	}
}
